package com.tongqin.distributed.vip;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @author yuantongqin
 * @date 2018/8/31 上午10:09
 * 这里代理的是TestMapper接口文档
 */
public class GPMapperProxy implements InvocationHandler{

    private GPSqlSession sqlSession;

    public GPMapperProxy(GPSqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //在invoke方法中，通过接口TestMapper接口中的方法去mapper.xml中找到对应的sql语句
        //怎么拿根据当前代理的对象中的方法名，去map中拿到sql，只有当前对象是

        if(method.getDeclaringClass().getName().equals(GPConfiguration.TestMapperXml.nameSpace)){
            String sql = GPConfiguration.TestMapperXml.sqlMaps.get(method.getName());
            sqlSession.selectOne(sql,String.valueOf(args[0]));//代理对象里
        }

        return method.invoke(proxy,args);
    }
}
